In [3]:
import tensorflow as tf
/Users/rohanjadhav/anaconda3/lib/python3.11/site-packages/pandas/core/arrays/masked.py:60: UserWarning: Pandas requires version '1.3.6' or newer of 'bottleneck' (version '1.3.5' currently installed).
  from pandas.core import (
In [26]:
from sklearn import decomposition
import plotly.express as px
from sklearn.neighbors import KNeighborsClassifier as knn

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'
In [4]:
train, test = tf.keras.datasets.mnist.load_data(path="mnist.npz")
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11490434/11490434 ━━━━━━━━━━━━━━━━━━━━ 0s 0us/step
In [9]:
train_x, train_y = train
test_x, test_y = test

train_x.shape
train_y.shape
test_x.shape
test_y.shape
Out[9]:
(60000, 28, 28)
Out[9]:
(60000,)
Out[9]:
(10000, 28, 28)
Out[9]:
(10000,)
In [19]:
train_x = train_x.reshape((60000,28*28))
test_x = test_x.reshape((10000,28*28))
In [21]:
pca = decomposition.PCA()

pca.n_components = 10

pca_data = pca.fit_transform(train_x)
pca_data.shape
Out[21]:
(60000, 10)
In [24]:
px.scatter(pca_data)
/Users/rohanjadhav/anaconda3/lib/python3.11/site-packages/plotly/express/_core.py:1979: FutureWarning:

When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.

In [30]:
knn_classifier = knn(n_neighbors=3, algorithm="auto")
In [31]:
%%time
knn_classifier.fit(pca_data, train_y)
knn_classifier.score(pca.transform(test_x), test_y)
CPU times: user 1.1 s, sys: 1.47 s, total: 2.56 s
Wall time: 664 ms
Out[31]:
0.9246
In [32]:
%%time
knn_classifier.fit(train_x, train_y)
knn_classifier.score(test_x, test_y)
CPU times: user 48.1 s, sys: 9.73 s, total: 57.8 s
Wall time: 17 s
Out[32]:
0.9705
In [ ]: